﻿#define _CRT_SECURE_NO_WARNINGS 1

//#include<stdio.h>
//#include<string.h>
//char* my_strncpy(char* p1, char* p2, size_t num);
//char* my_strncat(char* p1, char* p2, size_t num);
//int main()
//{
//	char str1[] = "asakll";
//	char str2[20] = { 0 };
//	char str3[] = "bbq";
//	strcpy(str2, str1);
//	printf("%s\n", str2);
//	my_strncpy(str2, str3,3);
//	printf("%s\n", str2);
//	my_strncat(str2,str1,5);
//	printf("%s\n", str2);
//	return 0;
//}
//
//char* my_strncpy(char* p1, char* p2, size_t num)
//{
//	size_t count = 0;
//	char* init = p1;
//	while (*p2 && count < num)
//	{
//		*p1 = *p2;
//		p1++;
//		p2++;
//		count++;
//	}
//	*p1 = '\0';
//	while (count < num)
//	{
//		*p1 = '\0';
//		p1++;
//		count++;
//	}
//	return init;
//}
//
////模拟实现strncat
//char* my_strncat(char* p1, char* p2, size_t num)
//{
//	char* init = p1;
//	size_t count = 0;
//	while (*p1)
//	{
//		p1++;
//	}
//	while (*p2 && count < num)
//	{
//		*p1 = *p2;
//		p1++;
//		p2++;
//		count++;
//	}
//	*p1 = '\0';
//	while (count < num)
//	{
//		*p1 = '\0';
//		p1++;
//		count++;
//	}
//	return init;
//}


//模拟实现memcpy
//void * memcpy ( void * destination, const void * source, size_t num );
//模拟实现memmove
//void * memmove ( void * destination, const void * source, size_t num );
//#include<stdio.h>
//
//void* my_memcpy(void* des, void* sor, size_t n)
//{
//	void* init = des;
//	
//	while (n--)
//	{
//		*(char*)des = *(char*)sor;
//		des = (char*)des + 1;
//		sor= (char*)sor + 1;
//	}
//	return init;
//}
//void* my_memmove(void* des, void* sor, size_t n)
//{
//	void* init = des;
//	if (des > sor)
//	{
//		while (n--)
//		{
//			*((char*)des + n) = *((char*)sor + n);
//
//		}
//	}
//	else if (des == sor)
//	{
//		;
//	}
//	else
//	{
//		while (n--)
//		{
//			*(char*)des = *(char*)sor;
//			des = (char*)des + 1;
//			sor = (char*)sor + 1;
//		}
//		
//	}
//	return init;
//}
//int main()
//{
//	int arr1[] = { 1,2,3,4,5,6,7,8,9,10 };
//	int arr2[10] = { 0 };
//	my_memcpy(arr2, arr1, 20);
//	my_memmove(arr2 + 2, arr2, 20);
//	return 0;
//}


//写一个函数判断当前机器是大端还是小端，如果是小端返回1，如果是大端返回0.
#include<stdio.h>
int main()
{
	int a = 1;
	char* pa = (char*)&a;//一定要有取地址符，因为a是一个整形，单纯a是取他的数字，而不是他的地址。

	if (*pa == 1)
		printf("是小端\n");
	else if(*pa == 0)
		printf("是大端\n");
	return 0;
}


//#include <stdio.h>
//int check_sys()
//{
//	int i = 1;
//	return (*(char*)&i);
//}
//int main()
//{
//	int ret = check_sys();
//	if (ret == 1)
//	{
//		printf("小端\n");
//	}
//	else
//	{
//		printf("大端\n");
//	}
//	return 0;
//}